home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
drdobbs
/
c_spec
/
execute
/
rm.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-02-20
|
2KB
|
120 lines
#include <stdio.h>
#include <errno.h>
/* RM.C Remove a file or group of files: Usage:
* Usage: rm -iv <filelist>
*
* -i (interactive) Ask before deleting files.
* -e (echo) Suppress diagnostic echo to screen.
*/
static int Verify = 0;
static int Echo = 1;
#define E(x) fprintf(stderr,"%s\n", x )
/*----------------------------------------------------------------------*/
args(argc, argv)
char **argv;
{
/* Process command line arguments. If -i iv found set
* Verify true, if -e is found set Echo false. Return
* 1 if we found an argument, 0 otherwise
* On entry argv should point at argv[1]
*/
register char *p;
if( **argv == '-' )
{
for( p = *argv + 1 ; *p ; p++ )
{
if ( *p == 'i' ) Verify = 1;
else if ( *p == 'e' ) Echo = 0;
else usage("Illegal argument" );
}
if( Verify )
Echo = 1;
return 1;
}
return 0;
}
/*----------------------------------------------------------------------*/
usage(str)
char *str;
{
E("Rm: Copyright (c) 1986, Allen I. Holub. All rights reserved\n");
E(str);
E("");
E("Remove (delete) a file or group of files, Usage is:\n");
E(" rm [-ie] file [... file]\n");
E("\t-i (interactive) Ask before deleting");
E("\t-e (echo) Suppress echo to screen\n");
E("You can't delete a directory with rm (use rmdir)\n");
exit(1);
}
/*----------------------------------------------------------------------*/
main(argc, argv)
char **argv;
{
register int c;
register int err;
int exit_status = 0;
reargv(&argc, &argv);
if( argc < 2 )
usage("Too few arguments");
if( args(--argc, ++argv) ) /* Process command line arguments */
{
++argv ;
--argc ;
}
for(; --argc >= 0; argv++ )
{
if( Verify )
{
fprintf(stderr,"Delete %-25s (y/n/q)?", *argv );
printf("%c\n", c = getch() );
if( c == 'n' )
continue;
if( c == 'q' )
break;
}
if( Echo )
printf("Deleting: %s", *argv );
if( isdir(*argv) )
printf(": May not delete a directory");
else if( (err = unlink(*argv)) == -1 )
{
fprintf( stderr,( err == EACCES )
? ". Not a file or file is read only"
: ". File not found" );
exit_status = 1;
}
printf("\n");
}
exit( exit_status );
}